#include <map>
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
/**
 * @brief 
 * 
 * @param families 
 * @param family 
 */
void add_family(std::map<std::string, std::vector<std::string>> &families, const std::string &family)
{
    if(families.find(family) == families.end())
    {
        families[family] = std::vector<std::string>();
    }
}
/**
 * @brief 
 * 
 * @param families 
 * @param family 
 * @param child 
 */
void add_child(std::map<std::string, std::vector<std::string>> &families, const std::string &family, const std::string &child)
{
    families[family].push_back(child);
}

/**
 * @brief 
 * 
 * @return int 
 */
int main(int args, char *argv[])
{
    std::map<std::string, std::vector<std::string>> families;
    add_family(families, "zhang");
    add_child(families, "zhang", "Qiang");
    add_child(families, "zhang", "Qi");
    add_child(families, "wang", "Qu");
    add_family(families, "wang");
    for(auto f : families)
    {
        std::cout << f.first << " childer:  ";
        for(auto c : f.second)
        {
            std::cout << f.first << c << " ";
        }
        std::cout << std::endl;
    }
    return 0;
}